The Internet network layer service (Internet Protocol Service) is unreliable. IP does not guarantee datagram delivery, in-order delivery of datagrams, and integrity of the data in the datagrams. In IP services, datagrams can overflow router buffers and never reach their destination, datagrams can arrive out of order, and bits in the datagram can get corrupted.
TCP creates a reliable data transfer service on top of IP's unreliable best-effort service. Many popular application protocols use TCP rather than UDP (User Datagram Protocol) primarily because TCP provides reliable data transfer service.
Retransmission of lost and corrupted data is crucial for providing reliable data transfer. TCP provides reliable data transfer by using positive acknowledgements and timers, wherein data that has been received correctly is acknowledged, and packet data units or segments are retransmitted when they or their corresponding acknowledgements are thought to be lost or corrupted. Moreover, TCP uses pipelining, allowing the sender to have multiple transmitted but yet-to-be-acknowledged segments outstanding at any given time. Pipelining can greatly improve the throughput of a TCP connection when the ratio of the segment size to round trip delay is small. The number of transmitted but unacknowledged segments that a sender can have is determined by TCPs flow control and congestion control mechanisms.
According to TCP congestion control, a TCP connection controls its transmission rate by limiting its number of transmitted but yet-to-be-acknowledged segments. This number of permissible unacknowledged segments is often referred to as TCP window size w. Ideally, TCP connections should be allowed to transmit as fast as possible, i.e. to have as large a number of outstanding unacknowledged packets as possible, as long as segments are not lost (dropped at routers) due to congestion. In very broad terms, a TCP connection starts with a small value of w and then “probes” for the existence of additional unused link bandwidth at the links on its end-to-end path by increasing w. A TCP connection continues to increase w until a segment loss occurs, as detected by a timeout or duplicate acknowledgements. When such a loss occurs, the TCP connection reduces w to a “safe level” and then begins probing again for unused bandwidth by slowly increasing w.
An important measure of the performance of a TCP connection is its throughput, i.e. the rate at which it transmits data from the sender to the receiver. Clearly, the throughput will depend on the value of w. If a TCP sender transmits all w segments back-to-back, it must then wait for one round trip time (RTT) until it receives acknowledgements for these segments, at which point it can send w additional segments. If a connection transmits w segments of a maximum segment size (MSS) by every RTT seconds, then the connections throughput, or transmission rate, is (w×MSS)/RTT bytes per second.
The TCP congestion control mechanism has each side of the connection keep track of two additional variables, the congestion window and a threshold.
Once a TCP connection is established between the two end-systems, the application process at the sender provides bytes to the senders TCP send buffer. TCP grabs portions of size MSS, encapsulates each portion within a TCP segment, and passes the segments to a network layer for transmission across the network. The TCP congestion window regulates the times at which the segments are sent into the network. Initially, the congestion window is equal to one MSS. TCP sends the first segment into the network and waits for an acknowledgement. If this segment is acknowledged before its timer times out, the sender increases the congestion window by one MSS and sends out two MSSs. If these segments are acknowledged before their timeouts, the sender increases the congestion window by one MSS for each of the acknowledged segments, giving a congestion window of four MSS, and sends out four MSSs. This procedure continues as long as the congestion window is below the threshold and the acknowledgements arrive before their corresponding timeouts. During this phase of the congestion control procedure, the congestion window increases exponentially, i.e. the congestion window is initialized to one MSS, after one RTT the window is increased to two segments, after two RTTs the window is increased to four segments, after three RTTs the window is increased to eight segments, etc. This phase of the algorithm is called slow start because it begins with a small congestion window equal to one MSS. The slow start phase ends when the window size exceeds the threshold value. Once the congestion window is larger than the current threshold value, the congestion window grows linearly rather than exponentially. This has the effect of increasing the congestion window by one in each RTT for which an entire windows worth of acknowledgements arrives. This phase of the algorithm is called congestion avoidance.
The congestion avoidance phase continues as long as the acknowledgements arrive before their corresponding timeouts. But the window size and hence the rate at which the TCP sender can send, cannot increase forever. Eventually, the TCP rate will be such that one of the links along the path become saturated, and point loss and a resulting timeout at the sender will occur. When a timeout occurs, the threshold value is set to half a value of the current congestion window, and the congestion window is reset to one MSS. The sender then again grows a congestion window exponentially fast using the slow start procedure until the congestion window hits the threshold.
The congestion window imposes an additional constraint on how much traffic a host can send into a connection. Specifically, the amount of unacknowledged data that a host can have within a TCP connection may not exceed the minimum of the congestion window and an advertised window indicating the number of bytes that a receiver is willing to accept. To achieve this, according to a window pacing method, the receiver sends acknowledgement packets including window advertisement data for informing the transmitter of the capacity of the receiver to handle incoming data. Thus, the receiver can signal to the transmitter a suitable window size (i.e. the advertised window) for flow control purposes. In practice, the advertised window specifies how many additional units of data the receiver is prepared to accept. The transmitter then compares the advertised window to the congestion window and adjusts its congestion window according to the size of the advertised window, unless the congestion window maintained by the transmitter is smaller. In principle, both the congestion window and the advertised window can be used to adjust the transmission rate of the transmitter.
Document U.S. Pat. No. 6,219,713 discloses a method and apparatus for adjusting a TCP sliding window with information about network conditions. An underlying network is enabled to use the receiver's window advertisements carried in the acknowledgement packets for controlling the transmission speed of a TCP source. To achieve this, a specific device or network functionality, i.e. a Feedback Information Converter (FIC) is introduced. The FIC includes a function for receiving accepted packet discarding priority levels carried by received data packets. When the FIC knows the nominal bit rate of the TCP source, it can calculate a TCP transmission window size required to keep the priorities of the data packets just greater than or equal to the accepted priority level. Then, the FIC put this calculated window size to the acknowledgement packet instead of the original receiver's advertised window.
Mobility support for Internet devices is quite important, since mobile computing is getting more widespread. It is expected that the number of mobile computers will increase immensely. Furthermore, there are already first products of cellular phones offering IP services. Cellular devices of the 3rd generation will be packet switched devices instead of circuit switched, therefore IP services on 3rd generation cellular devices will be an integral part in the future.
To support mobile devices, which dynamically change their access points to the Internet, the Internet Engineering Task Force (IETF) currently standardizes a protocol supporting mobile Internet devices, called mobile IP. There are two variations of mobile IP, mobile IPv4, based on IPv4, and mobile IPv6, based IPv6. Further details regarding IPv6 can be gathered from the IETF specification RFC 2460.
Mobile IPv6 enhanced mobility will enable seamless handover between heterogeneous access networks. IP telephony or such services will become seamless even in heterogeneous access environments. However, when handovers occur in such environment, some applications such as Web browse and file transfer which use TCP as transport protocol will become problems or their performance will deteriorate. In particular, TCP is a reliable and robust transport protocol tuned for networks with consistent access media. The “consistent access media” means that the bandwidth and/or data rates of a terminal device (mobile or fixed node) accessing the Internet remains stable or relatively stable. This condition might be challenged in the mobile IPv6 networks. When a mobile node performs a handover from one access medium, e.g. a Wireless Local Area Network (WLAN), to another access medium, e.g. a Wideband Code Division Multiple Access (WCDMA) Network, the bandwidth and/or data rate of the mobile node may dramatically change, e.g. from a few megabytes to tens or hundreds of kilobytes. If the mobile node performs the handover from such a high-speed access network to such a low-speed access network and if the mobile node still keeps its original trends of transmission data rate, it would block the access node or make the access node congested. On the contrary, if the mobile node performs a handover from a low-speed access network to a high-speed access network, the access capacity may be underutilized. In addition, whenever a mobile node performs a handover from a CDMA cell with less/more subscribers (other mobile node) to another CDMA cell with more/less subscribers, its access bandwidth will also be no longer “consistent”.